The present disclosure generally relates to computing devices, and more particularly to replicating data in a cluster.
High availability (HA) is one of the basic requirements for nowadays enterprise applications. Enterprise systems operating today are subject to continuous program execution, that is 24 hours a day and 7 days a week. The concept of “overnight” or “planned downtime” no longer exists because businesses want programs and data to be available at any point during the day and night. Any outages or deteriorated service can result in loss of revenue as customers simply take their business elsewhere, and the enterprise stops to function on a global scale. High availability may be provided to an application when it is able to survive, for example, a crash on the repository server that stores data for the application.
A cluster is a set of application server instances configured to act in concert to deliver greater scalability and availability than a single instance can provide. Database vendors may use several different strategies to implement high availability for a data storage system. The implementation of high availability for data storage is a complex technical problem and uses strategies that typically require special and expensive hardware or a special configuration of databases that brings limitations for the provided features.
A traditional approach of providing high availability to an application uses a storage area network (SAN). A SAN is a high performance dedicated network used primarily to provide fast and reliable communication between computers and storage devices in a shared storage networking environment. The SAN also enables a storage device to communicate with another storage device. Software solutions at the repository level, however, are complex and expensive. For example, a repository within a cluster may be a “share everything” repository in which all data files, control files, and redo log files used by the repository reside on a shared storage that is accessible by all other repository instances. This traditional approach is typically expensive and proprietary. The implementation of high availability in the Enterprise Java world, for example, is based on using a cluster of application servers and on data redundancy within this cluster. This solution may require intensive communication between nodes in the cluster and/or complex algorithms to ensure data integrity.